package com.ldzy.webase.service.impl;

import com.ldzy.webase.dao.PaoOrderMapper;
import com.ldzy.webase.entity.PaoOrder;
import com.ldzy.webase.service.PaoOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.sql.Timestamp;
import java.util.Date;
import java.util.List;

/**
 * @author ：Lq
 * @version ：1.0
 * @date ：2022/12/2 11:29
 * @description ：t_pao_order-跑腿任务单表-业务层
 */
@Service
public class PaoOrderServiceImpl implements PaoOrderService {
    @Autowired
    PaoOrderMapper paoOrderMapper;

    /**
     * @author ：Lq
     * @date ：2022/12/2 11:29
     * @description ：查询所有还未接单的跑腿任务单并排序，可分页查询
     */
    @Override
    public List<PaoOrder> getAllPaoOrder(Integer pageNum, Integer pageSize) {
        Integer curPage = null;

        System.out.println("pageNum:" + pageNum + "pageSize:" + pageSize);
        if (pageNum != null && pageSize != null) {
            // 分页字段不为空就执行这里的
            curPage = (pageNum - 1) * pageSize;
        }

        List<PaoOrder> paoOrderList = paoOrderMapper.getAllPaoOrder(curPage, pageSize);

        // 循环遍历查询出来的评论，格式化发布日期时间
        for (int i = 0; i < paoOrderList.size(); i++) {
            // 取出发布日期
            Timestamp commentDate = paoOrderList.get(i).getPublishDate();
            // 获取当前时间
            Date nowDate = new Date();
            // 计算发布日期距离当前时间过去了多久，获取计算后的时间戳（单位：毫秒数）
            long times = nowDate.getTime() - commentDate.getTime();
            long day = times / (24 * 60 * 60 * 1000); // 天数
            long hour = (times / (60 * 60 * 1000) - day * 24); // 小时
            long min = ((times / (60 * 1000)) - day * 24 * 60 - hour * 60); // 分钟
            long sec = (times / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60); // 秒

            // 创建可变字符缓冲对象StringBuffer，只是为了方便
            StringBuffer sb = new StringBuffer();

            if (day > 7) {
                // 如果大于7天不执行操作
            } else if (day > 0) {
                sb.append(day + "天前");
            } else if (hour > 0) {
                sb.append(hour + "小时前");
            } else if (min > 0) {
                sb.append(min + "分钟前");
            } else if (sec < 10) {
                sb.append("刚刚");
            } else {
                sb.append(sec + "秒前");
            }

            // sb.toString()转换成字符串对象存入
            paoOrderList.get(i).setPublishDateInterval(sb.toString());
        }

        return paoOrderList;
    }
}
